package service
import (
	"github.com/mojocn/base64Captcha"
	"math/rand"
	"time"
	"fmt"
)

//func main()  {
//	demoCodeCaptchaCreate()
//}


//验证码生成
func DemoCodeCaptchaCreate() (cid string,uid string){
	//config struct for digits
	//数字验证码配置
	var configD = base64Captcha.ConfigDigit{
		Height:     80,
		Width:      240,
		MaxSkew:    0.7,
		DotCount:   80,
		CaptchaLen: 6,
	}
	//config struct for audio
	//声音验证码配置
	//var configA = base64Captcha.ConfigAudio{
	//	CaptchaLen: 6,
	//	Language:   "zh",
	//}
	////config struct for Character
	////字符,公式,验证码配置
	//var configC = base64Captcha.ConfigCharacter{
	//	Height: 60,
	//	Width:  240,
	//	//const CaptchaModeNumber:数字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算术,CaptchaModeNumberAlphabet:数字字母混合.
	//	Mode:               base64Captcha.CaptchaModeNumber,
	//	ComplexOfNoiseText: base64Captcha.CaptchaComplexLower,
	//	ComplexOfNoiseDot:  base64Captcha.CaptchaComplexLower,
	//	IsShowHollowLine:   false,
	//	IsShowNoiseDot:     false,
	//	IsShowNoiseText:    false,
	//	IsShowSlimeLine:    false,
	//	IsShowSineLine:     false,
	//	CaptchaLen:         6,
	//}
	////创建声音验证码
	////GenerateCaptcha 第一个参数为空字符串,包会自动在服务器一个随机种子给你产生随机uiid.
	//_, capA := base64Captcha.GenerateCaptcha("", configA)
	////以base64编码
	//base64stringA := base64Captcha.CaptchaWriteToBase64Encoding(capA)
	//
	//
	////创建字符公式验证码.
	////GenerateCaptcha 第一个参数为空字符串,包会自动在服务器一个随机种子给你产生随机uiid.
	//_, capC := base64Captcha.GenerateCaptcha("", configC)
	////以base64编码
	//base64stringC := base64Captcha.CaptchaWriteToBase64Encoding(capC)


	//创建数字验证码.
	//GenerateCaptcha 第一个参数为空字符串,包会自动在服务器一个随机种子给你产生随机uiid.
	num := randNum()
	id, capD := base64Captcha.GenerateCaptcha(num, configD)
	//以base64编码
	fmt.Println(num)
	fmt.Println(id)
	base64stringD := base64Captcha.CaptchaWriteToBase64Encoding(capD)
	return base64stringD,id
}

//验证码验证
func DemoCodeCaptchaUse(val string,id string) (rep bool) {
	//比较图像验证码
	verifyResult := base64Captcha.VerifyCaptcha(id, val)
	fmt.Println(verifyResult)
	return verifyResult
}

//随机数生成
func randNum ()(num string){
	rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
	num = fmt.Sprintf("%06v", rnd.Int31n(100000))
	return num
}
